package com.wf.ew.daily.controller;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author : Doman
 * @version ：1.0
 * @date : 2020-04-10 16:51
 */
public class AA {

    /**
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
//        String pathname = "D:\\My documents\\ARP\\checkDigitdata.txt";
//        List<String> data = null;
//        try {
//            data = FileHelper.fileReader(pathname);
//        } catch (IOException e) {
//            // TODO Auto-generated catch block
//            e.printStackTrace();
//        }
//        for (int i = 0; i < data.size(); i++) {
        checkDigit("TLLU4041154");
//        }
        // System.out.println("sum is :" + sum);
        // System.out.println("check digit is " + sum%11);
    }

    public static boolean checkDigit(String containerNumber) throws Exception {
        if (containerNumber == null || containerNumber.trim().length() != 11) {
            throw new Exception("Not a container number");
        }
        Map<String, Integer> mapofCode = new HashMap<String, Integer>();

        mapofCode.put("A", 10);
        mapofCode.put("B", 12);
        mapofCode.put("C", 13);
        mapofCode.put("D", 14);
        mapofCode.put("E", 15);
        mapofCode.put("F", 16);
        mapofCode.put("G", 17);
        mapofCode.put("H", 18);
        mapofCode.put("I", 19);
        mapofCode.put("J", 20);
        mapofCode.put("K", 21);
        mapofCode.put("L", 23);
        mapofCode.put("M", 24);
        mapofCode.put("N", 25);
        mapofCode.put("O", 26);
        mapofCode.put("P", 27);
        mapofCode.put("Q", 28);
        mapofCode.put("R", 29);
        mapofCode.put("S", 30);
        mapofCode.put("T", 31);

        mapofCode.put("U", 32);
        mapofCode.put("V", 34);
        mapofCode.put("W", 35);
        mapofCode.put("X", 36);
        mapofCode.put("Y", 37);
        mapofCode.put("Z", 38);
        String constainerCode = containerNumber;
        int positon = 1;
        int sum = 0;
        for (int i = 0; i < constainerCode.length() - 1; i++) {
            if (mapofCode.containsKey(constainerCode.substring(i, i + 1))) {
                sum += Double.valueOf(mapofCode.get(constainerCode.substring(i,
                        i + 1))) * Math.pow(2, positon - 1);
            } else {
                sum += Double.valueOf(constainerCode.substring(i, i + 1));
            }
        }
        System.out.println(sum);
        return false;
    }
}